package org.example.api.admin;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import javafx.print.Collation;
import org.example.R.R;
import org.example.entity.dto.ExcelDto;
import org.example.entity.po.*;
import org.example.entity.vo.admin.*;
import org.example.entity.vo.pc.PCNoticeVO;
import org.example.mapper.BasicMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.*;

/**
 * @Author sunyaoyao
 * @Date 2024/8/19 19:14
 */
@RestController
@RequestMapping("/api/admin/basic")
public class BasicController {

    @Autowired
    private BasicMapper basicMapper;


    @PostMapping("/receive_excel_data_1")
    public R receiveExcelData1(@RequestBody ExcelDto dto) {
        List<村两委信息PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            村两委信息 vo = new 村两委信息();
            村两委信息PO po = new 村两委信息PO();
            vo.set姓名(String.valueOf(obj.get("李林村“两委”成员信息")));
            vo.set职务(String.valueOf(obj.get("__EMPTY")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_1")));
            vo.set年龄(String.valueOf(obj.get("__EMPTY_2")));
            vo.set身份证号(String.valueOf(obj.get("__EMPTY_3")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete村两委信息();
            basicMapper.insert村两委信息(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/excel_list_1")
    public R excelList1() {
        List<村两委信息> 村两委信息List = basicMapper.list村两委信息();
        return R.success("获取成功!").setData(村两委信息List);
    }


    @PostMapping("/receive_excel_data_2")
    public R receiveExcelData2(@RequestBody ExcelDto dto) {
        List<户籍人口信息PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            户籍人口信息 vo = new 户籍人口信息();
            户籍人口信息PO po = new 户籍人口信息PO();
            vo.set住址(String.valueOf(obj.get("王丕街道李林村户籍人口信息")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY")));
            vo.set与户主关系(String.valueOf(obj.get("__EMPTY_1")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_2")));
            vo.set公民身份号码(String.valueOf(obj.get("__EMPTY_3")));
            vo.set户别(String.valueOf(obj.get("__EMPTY_4")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete户籍人口信息();
            basicMapper.insert户籍人口信息(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/excel_list_2")
    public R excelList2() {
        List<户籍人口信息> 户籍人口信息List = basicMapper.list户籍人口信息();
        return R.success("获取成功!").setData(户籍人口信息List);
    }


    @PostMapping("/receive_excel_data_3")
    public R receiveExcelData3(@RequestBody ExcelDto dto) {
        List<退役军人PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            退役军人 vo = new 退役军人();
            退役军人PO po = new 退役军人PO();
            vo.set行政区划(String.valueOf(obj.get("王丕街道李林村退役军人名单")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_1")));
            vo.set民族(String.valueOf(obj.get("__EMPTY_2")));
            vo.set身份证号(String.valueOf(obj.get("__EMPTY_3")));
            vo.set人员类别(String.valueOf(obj.get("__EMPTY_4")));
            vo.set户籍类别(String.valueOf(obj.get("__EMPTY_5")));
            vo.set政治面貌(String.valueOf(obj.get("__EMPTY_6")));
            vo.set文化程度(String.valueOf(obj.get("__EMPTY_7")));
            vo.set家庭住址(String.valueOf(obj.get("__EMPTY_8")));
            vo.set手机号码(String.valueOf(obj.get("__EMPTY_9")));
            vo.set婚姻状况(String.valueOf(obj.get("__EMPTY_10")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete退役军人();
            basicMapper.insert退役军人(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/excel_list_3")
    public R excelList3() {
        List<退役军人> 退役军人List = basicMapper.list退役军人();
        return R.success("获取成功!").setData(退役军人List);
    }

    @PostMapping("/receive_excel_data_4")
    public R receiveExcelData4(@RequestBody ExcelDto dto) {
        List<公益岗名单PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            公益岗名单 vo = new 公益岗名单();
            公益岗名单PO po = new 公益岗名单PO();
            vo.set序号(String.valueOf(obj.get("王丕街道李林村乡村公益岗名单")));
            vo.set村(String.valueOf(obj.get("__EMPTY")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY_1")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_2")));
            vo.set身份证号码(String.valueOf(obj.get("__EMPTY_3")));
            vo.set联系方式(String.valueOf(obj.get("__EMPTY_4")));
            vo.set岗位职责(String.valueOf(obj.get("__EMPTY_5")));
            vo.set人员类别(String.valueOf(obj.get("__EMPTY_6")));
            vo.set批次(String.valueOf(obj.get("__EMPTY_7")));
            vo.set上岗时间(String.valueOf(obj.get("__EMPTY_8")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete公益岗名单();
            basicMapper.insert公益岗名单(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/excel_list_4")
    public R excelList4() {
        List<公益岗名单> 公益岗名单List = basicMapper.list公益岗名单();
        return R.success("获取成功!").setData(公益岗名单List);
    }

    @PostMapping("/receive_excel_data_5")
    public R receiveExcelData5(@RequestBody ExcelDto dto) {
        List<享受脱贫政策户名单PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            享受脱贫政策户名单 vo = new 享受脱贫政策户名单();
            享受脱贫政策户名单PO po = new 享受脱贫政策户名单PO();
            vo.set序号(String.valueOf(obj.get("王丕街道李林村享受脱贫政策户名单")));
            vo.set行政村(String.valueOf(obj.get("__EMPTY")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY_1")));
            vo.set与户主关系(String.valueOf(obj.get("__EMPTY_2")));
            vo.set当前家庭人口数(String.valueOf(obj.get("__EMPTY_3")));
            vo.set证件号码(String.valueOf(obj.get("__EMPTY_4")));
            vo.set民族(String.valueOf(obj.get("__EMPTY_5")));
            vo.set文化程度(String.valueOf(obj.get("__EMPTY_6")));
            vo.set健康状况(String.valueOf(obj.get("__EMPTY_7")));
            vo.set劳动技能(String.valueOf(obj.get("__EMPTY_8")));
            vo.set是否参加大病保险(String.valueOf(obj.get("__EMPTY_9")));
            vo.set致贫原因(String.valueOf(obj.get("__EMPTY_10")));
            vo.set是否解决安全饮用水(String.valueOf(obj.get("__EMPTY_11")));
            vo.set年收入(String.valueOf(obj.get("__EMPTY_12")));
            vo.set纯收入(String.valueOf(obj.get("__EMPTY_13")));
            vo.set人均纯收入(String.valueOf(obj.get("__EMPTY_14")));
            vo.set户联系电话(String.valueOf(obj.get("__EMPTY_15")));
            vo.set人联系电话(String.valueOf(obj.get("__EMPTY_16")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete享受脱贫政策户名单();
            basicMapper.insert享受脱贫政策户名单(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/excel_list_5")
    public R excelList5() {
        List<享受脱贫政策户名单> 享受脱贫政策户名单List = basicMapper.list享受脱贫政策户名单();
        return R.success("获取成功!").setData(享受脱贫政策户名单List);
    }


    @PostMapping("/receive_excel_data_6")
    public R receiveExcelData6(@RequestBody ExcelDto dto) {
        List<低保人员名单PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            低保人员名单 vo = new 低保人员名单();
            低保人员名单PO po = new 低保人员名单PO();
            vo.set序号(String.valueOf(obj.get("王丕街道李林村低保人员名单")));
            vo.set村名(String.valueOf(obj.get("__EMPTY")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY_1")));
            vo.set身份证号(String.valueOf(obj.get("__EMPTY_2")));
            vo.set人员类别(String.valueOf(obj.get("__EMPTY_3")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete低保人员名单();
            basicMapper.insert低保人员名单(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/excel_list_6")
    public R excelList6() {
        List<低保人员名单> 低保人员名单List = basicMapper.list低保人员名单();
        return R.success("获取成功!").setData(低保人员名单List);
    }


    @PostMapping("/dw/receive_excel_data_1")
    public R dwReceiveExcelData1(@RequestBody ExcelDto dto) {
        List<村支部委员会信息PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            村支部委员会信息 vo = new 村支部委员会信息();
            村支部委员会信息PO po = new 村支部委员会信息PO();
            vo.set姓名(String.valueOf(obj.get("中共金乡县王丕街道李林村支部委员会信息")));
            vo.set职务(String.valueOf(obj.get("__EMPTY")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_1")));
            vo.set年龄(String.valueOf(obj.get("__EMPTY_2")));
            vo.set身份证号(String.valueOf(obj.get("__EMPTY_3")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete村支部委员会信息();
            basicMapper.insert村支部委员会信息(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/dw/excel_list_1")
    public R dwExcelList1() {
        List<村支部委员会信息> 村支部委员会信息List = basicMapper.list村支部委员会信息();
        return R.success("获取成功!").setData(村支部委员会信息List);
    }

    @PostMapping("/dw/receive_excel_data_2")
    public R dwReceiveExcelData2(@RequestBody ExcelDto dto) {
        List<党员信息PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            党员信息 vo = new 党员信息();
            党员信息PO po = new 党员信息PO();
            vo.set序号(String.valueOf(obj.get("中共金乡县王丕街道李林村支部委员会党员信息")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY")));
            vo.set身份证号(String.valueOf(obj.get("__EMPTY_1")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_2")));
            vo.set联系方式(String.valueOf(obj.get("__EMPTY_3")));
            vo.set身份(String.valueOf(obj.get("__EMPTY_4")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete党员信息();
            basicMapper.insert党员信息(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/dw/excel_list_2")
    public R dwExcelList2() {
        List<党员信息> 党员信息List = basicMapper.list党员信息();
        return R.success("获取成功!").setData(党员信息List);
    }


    @PostMapping("/dw/receive_excel_data_3")
    public R dwReceiveExcelData3(@RequestBody ExcelDto dto) {
        List<入党积极分子信息PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            入党积极分子信息 vo = new 入党积极分子信息();
            入党积极分子信息PO po = new 入党积极分子信息PO();
            vo.set序号(String.valueOf(obj.get("王丕街道李林村党支部入党积极分子信息表")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_1")));
            vo.set出生年月(String.valueOf(obj.get("__EMPTY_2")));
            vo.set学历(String.valueOf(obj.get("__EMPTY_3")));
            vo.set递交入党申请书时间(String.valueOf(obj.get("__EMPTY_4")));
            vo.set接受为入党积极分子时间(String.valueOf(obj.get("__EMPTY_5")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete入党积极分子信息();
            basicMapper.insert入党积极分子信息(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/dw/excel_list_3")
    public R dwExcelList3() {
        List<入党积极分子信息> 入党积极分子信息List = basicMapper.list入党积极分子信息();
        return R.success("获取成功!").setData(入党积极分子信息List);
    }


    @PostMapping("/dw/receive_excel_data_4")
    public R dwReceiveExcelData4(@RequestBody ExcelDto dto) {
        List<后备人才PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            后备人才 vo = new 后备人才();
            后备人才PO po = new 后备人才PO();
            vo.set序号(String.valueOf(obj.get("李林村青年后备人才基本信息库")));
            vo.set姓名(String.valueOf(obj.get("__EMPTY")));
            vo.set性别(String.valueOf(obj.get("__EMPTY_1")));
            vo.set出生年月(String.valueOf(obj.get("__EMPTY_2")));
            vo.set入党时间(String.valueOf(obj.get("__EMPTY_3")));
            vo.set学历(String.valueOf(obj.get("__EMPTY_4")));
            vo.set从业情况(String.valueOf(obj.get("__EMPTY_5")));
            vo.set有何特长(String.valueOf(obj.get("__EMPTY_6")));
            vo.set所居村(String.valueOf(obj.get("__EMPTY_7")));
            vo.set联系电话(String.valueOf(obj.get("__EMPTY_8")));
            vo.set帮带人姓名(String.valueOf(obj.get("__EMPTY_9")));
            vo.set帮带人职务(String.valueOf(obj.get("__EMPTY_10")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete后备人才();
            basicMapper.insert后备人才(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/dw/excel_list_4")
    public R dwExcelList4() {
        List<后备人才> 后备人才List = basicMapper.list后备人才();
        return R.success("获取成功!").setData(后备人才List);
    }


    @PostMapping("/sq/receive_excel_data")
    public R sqReceiveExcelData(@RequestBody ExcelDto dto) {
        List<诉求办理PO> result = new ArrayList<>();

        List<Map<String, Object>> excelData = dto.getExcelData();
        excelData.remove(0);
        excelData.forEach(obj -> {
            诉求办理 vo = new 诉求办理();
            诉求办理PO po = new 诉求办理PO();
            vo.set序号(String.valueOf(obj.get("王丕街道李林村群众诉求办理情况")));
            vo.set反映人姓名(String.valueOf(obj.get("__EMPTY")));
            vo.set联系电话(String.valueOf(obj.get("__EMPTY_1")));
            vo.set诉求内容(String.valueOf(obj.get("__EMPTY_2")));
            vo.set收到时间(String.valueOf(obj.get("__EMPTY_3")));
            vo.set处理状态(String.valueOf(obj.get("__EMPTY_4")));

            BeanUtils.copyProperties(vo, po);
            po.setId(IdUtil.getSnowflakeNextId());
            result.add(po);
        });

        if (CollectionUtil.isNotEmpty(result)) {
            basicMapper.delete诉求办理();
            basicMapper.insert诉求办理(result);
        }

        return R.success("成功").setData(result);
    }

    @PostMapping("/sq/excel_list")
    public R sqExcelList() {
        List<诉求办理> 诉求办理List = basicMapper.list诉求办理();
        return R.success("获取成功!").setData(诉求办理List);
    }


    @PostMapping("/dwList")
    public R dwList() {
        List<诉求办理> 诉求办理List = basicMapper.list诉求办理();
        PCNoticeVO pcNoticeVO = new PCNoticeVO();


        List<List<String>> result = new ArrayList<>();
        List<List<String>> clickResult = new ArrayList<>();
        诉求办理List.forEach(obj -> {
            List<String> vo = new ArrayList<>();
            List<String> clickVo = new ArrayList<>();
            vo.add(obj.get反映人姓名());
            vo.add(obj.get联系电话());
            vo.add(obj.get诉求内容());
            vo.add(obj.get收到时间());
            vo.add(obj.get处理状态());

            clickVo.add(obj.get反映人姓名());
            clickVo.add(obj.get联系电话());
            clickVo.add(obj.get诉求内容());
            clickVo.add(obj.get收到时间());
            clickVo.add(obj.get处理状态());

            result.add(vo);
            clickResult.add(clickVo);
        });

        pcNoticeVO.setShowData(result);
        pcNoticeVO.setClickData(clickResult);
        return R.success("查询成功!", pcNoticeVO);


    }

    @PostMapping("/sq/detail")
    public R sqExcelList(@RequestParam("id") Long id) {
        诉求办理 诉求办理 = basicMapper.select诉求办理(id);
        return R.success("获取成功!").setData(诉求办理);
    }

}
